package Dados.SqlServer;

import Dados.BancoSql;
import Dados.IDAOItem;
import Negocio.Item;

import javax.swing.JOptionPane;

public class DAOItem implements IDAOItem {
	
	public static DAOItem daoitem = null;
	
	private DAOItem(){
		
	}
	
	public static DAOItem getInstance(){
		if(daoitem==null){
			daoitem = new DAOItem ();
		}
		return daoitem;
	}

	public void entradaItem(Item item) {

String comando;
		
		try{
			BancoSql conexao = new BancoSql();
			conexao.AbrirConexao();
			comando = "insert into item";
			comando = comando + "(quantidade_inserida,descricao_item,quantidade_retirada,localizacao,quantidade_estornada,codigo_produto)";
			comando = comando + "values";
			comando = comando + "('" + item.getQuantidade_inserida() + "',";
			comando = comando + "'" + item.getDescricao_item() + "',";
			comando = comando + "'" + item.getQuantidade_retirada()+ "',";
			comando = comando + "'" + item.getLocalizacao()+ "',";
			comando = comando + "'" + item.getQuantidade_estornada()+ "',";
			comando = comando + "'" + item.getCodigo_produto()+ "')";
						
			conexao.ExecutaComando(comando);
			
			JOptionPane.showMessageDialog(null, "Cadastro Realizado com sucesso");
			conexao.FecharConexao();
			
		}catch(RuntimeException e){
			JOptionPane.showMessageDialog(null, "Erro no cadastro"+ e);
		}
	}

	public void saidaItem(Item item) {
		String comando;
		int retirada;
		
		retirada = item.getQuantidade_inserida() - item.getQuantidade_retirada();
		
		try{
			BancoSql conexao = new BancoSql();
			conexao.AbrirConexao();
			comando = "update Item set quantidade_inserida = " + retirada;
			comando = comando + " where codigo_item = " + item.getCodigo_item();
			conexao.ExecutaComando(comando);
			JOptionPane.showMessageDialog(null,"Alteracao Realizada com Sucesso" );
			conexao.FecharConexao();
        }catch(RuntimeException e){
			JOptionPane.showMessageDialog(null,"Erro na alteracao");
			
		}
	
	}

	public Item consultarItem(Item item) {
		String comando;
		try{
		BancoSql conexao = new BancoSql();
		conexao.AbrirConexao();
		comando= "select *from Item";
		comando=comando + (item.getQuantidade_inserida());
		comando=comando+ (item.getDescricao_item());
		comando=comando+(item.getQuantidade_retirada());
		comando=comando+(item.getLocalizacao());
		comando=comando+(item.getQuantidade_estornada());
		comando=comando+(item.getCodigo_produto());
		conexao.ExecutaComando(comando);
		conexao.FecharConexao();
		}catch(RuntimeException e){
			JOptionPane.showMessageDialog(null, "Erro na conexao");
			
		}
	
		return item;
	}

	public void extornoEntradaItem(Item item) {
		String comando;
		try{
			BancoSql conexao = new BancoSql();
			conexao.AbrirConexao();
			comando = "delete *from Item";
			comando=comando + ( item.getQuantidade_inserida());
			comando=comando+ (item.getDescricao_item());
			comando=comando+(item.getQuantidade_retirada());
			comando=comando+(item.getLocalizacao());
			comando=comando+(item.getQuantidade_estornada());
			comando=comando+(item.getCodigo_produto());
			conexao.ExecutaComando(comando);
			JOptionPane.showMessageDialog(null,"Extorno Entrada Realizado com Sucesso" );
			conexao.FecharConexao();
			
		}catch (RuntimeException e){
			JOptionPane.showMessageDialog(null, "Erro na conexao" );
		}
		
		
	}
	
	public void extornoSaidaItem(Item item) {
		String comando;
		try{
			BancoSql conexao = new BancoSql();
			conexao.AbrirConexao();
			comando = "delete *from Item";
			comando=comando + ( item.getQuantidade_inserida());
			comando=comando+ (item.getDescricao_item());
			comando=comando+(item.getQuantidade_retirada());
			comando=comando+(item.getLocalizacao());
			comando=comando+(item.getQuantidade_estornada());
			comando=comando+(item.getCodigo_produto());
			conexao.ExecutaComando(comando);
			JOptionPane.showMessageDialog(null,"Extorno Saida Realizado com Sucesso" );
			conexao.FecharConexao();
			
		}catch (RuntimeException e){
			JOptionPane.showMessageDialog(null, "Erro na conexao" );
		}
		
		
	}

	

}